#pragma once

#include "..\common.h"

#include "DAbstract.h"

#include "DMap.h"
#include "DItem.h"
#include "DCreature.h"
#include "DRecipe.h"



namespace DeepClasses
{

	class DWorld: public DAbstract
	{
	public:
		DWorld();
		virtual ~DWorld();

		int CreateWorld();

		DMap m_map;

		//////////////////////////////////////////////////////////////////////////
		// Lists of actual objects.
		// These lists store anything that is on map. They perform memory management
		
		// list of living dwarves
		std::list<DCreature*> m_dwarves;
		// list of items on map
		std::list<DItem*> m_items;

		//////////////////////////////////////////////////////////////////////////
		// Lists of prototypes
		// These lists represent prototypes for object creation
		// They are not real objects and they do not exist on map.
		
		// list of materials
		std::list<DMaterial*> m_pMats;

		// list of items
		std::list<DItem*> m_pItems;

		// list of recipes
		std::list<DRecipe*> m_pRecipes;
	};
};